package com.hua.designpattern.structural.adapter;

/**
 * 
 * @author joshua
 * 
 *         <pre>
 * 
 * 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
 * 推荐使用组合的方式去实现(java类只能单继承)。
 * 
 * 角色:
 *   目标接口（Target）：客户所期待的接口。目标可以是具体的或抽象的类，也可以是接口。
 *   需要适配的类（Adaptee）：需要适配的类或适配者类。
 *   适配器（Adapter）：通过包装一个需要适配的对象，把原接口转换成目标接口。
 * 
 * 优点： 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。
 * 缺点： 有选择的情况下，可以对系统进行重构，过多的适配器会使系统变得不清晰。
 * 
 * 
 *    REF:
 *        缺省默认适配器(java.awt.event.MouseAdapter  java.awt.event.KeyAdapter)
 *      
 *         </pre>
 *
 */

public class TestAdapter {

	public static void main(String[] args) {
		TargetInterface target1 = new ConcreteTarget();
		target1.request();

		TargetInterface target2 = new AdatperInherit();
		target2.request();

		Adaptee adaptee = new Adaptee();
		TargetInterface target3 = new AdatperComb(adaptee);
		target3.request();
	}

}
